class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *
     * 
     * @param n int整型 
     * @return int整型
     */
    /* 暴力无法通过！ 定位n所在的区间，即n所在的数字的位数；这个区间的起点值
    加上剩余部分除以这个区间的位数就可以定位n在哪个数字上，再通过n对位数取模可以定位是哪一位。
    （下标从0开始，需要对n减1）
    */
/*
    int findNthDigit(int n) {
        int digit = 1;   // 位数
        long start = 1;  // 区间起始值
        long sum = 9;    // 区间中数字个数
        while(n > sum){
            n -= sum;
            start *= 10;
            ++digit;
            sum = 9 * start * digit;
        }
        int num = start + (n-1)/digit;   // 对应的数值
        int res = (n-1) % digit;     // n对应的数
        return to_string(num)[res] - '0';
    }
*/
    
    
    int findNthDigit(int n){
        int i = 1;
        for(; i*pow(10,i) < n; ++i)
            n += pow(10, i);
        return to_string(n/i)[n%i] - '0';
    }
};